/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aritmeticacomputacional;

/**
 * @author Charles
 * @author João Paulo
 */
public class PontoFlutuante {

    String sinal;
    String expoente;
    String significando;

    public PontoFlutuante(StringBuilder numero) {
        this.sinal = numero.charAt(0) + "";
        this.expoente = numero.substring(1, 6);
        this.significando = numero.substring(6, 16);
    }

    public String getSinal() {
        return sinal;
    }

    public void setSinal(String sinal) {
        this.sinal = sinal;
    }

    public String getExpoente() {
        return expoente;
    }

    public void setExpoente(String expoente) {
        this.expoente = expoente;
    }

    public String getSignificando() {
        return significando;
    }

    public void setSignificando(String significando) {
        this.significando = significando;
    }

    public double getDecValue() {
        double resultado = 0;
        for (int i = 0; i < getSignificando().length(); i++) {
            resultado += Integer.parseInt(this.getSignificando().charAt(i) + "") * Math.pow(2, 10 - i);
        }
        while (resultado >= 1) {
            resultado /= 2;
        }
        int excesso = (int) Math.pow(2, 4)- 1;
        int exp = 0;
        System.out.println(getExpoente());
        for (int i = 0; i < getExpoente().length(); i++) {
            exp += Integer.parseInt(this.getExpoente().charAt(i) + "") * Math.pow(2, 4 - i);
        }
        System.out.println(exp);
        exp = exp - excesso;
        return resultado*Math.pow(2,exp);
    }
}
